package com.xsp.mybatisxmlsqlparser.converter;


import com.xsp.mybatisxmlsqlparser.multidatabase.SQLModifier;
import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.parser.CCJSqlParser;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.parser.ParseException;
import net.sf.jsqlparser.statement.Statement;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class PostgresConverter {

    private final SQLModifier sqlModifier;

    public PostgresConverter(SQLModifier sqlModifier) {
        this.sqlModifier = sqlModifier;
    }

    public String convertToPostgres(String originalSql) throws ParseException {
        //JsqlParser解析SQL
        CCJSqlParser parser = CCJSqlParserUtil.newParser(originalSql);
        Statement statement = parser.Statement();
        parser.getASTRoot().jjtAccept(sqlModifier, null);
        return statement.toString();
    }
}
